﻿//给你两个整数数组 nums1 和 nums2 ，请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数，
//应与元素在两个数组中都出现的次数一致（如果出现次数不一致，则考虑取较小值）。可以不考虑输出结果的顺序。


int Cmp(const void* a, const void* b)
{
	return *(int*)a - *(int*)b;
}
int* intersect(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){
	int n = 0;
	int q = 0;
	int p = 0;
	int i = 0;
	int *ret = malloc(sizeof(int)*(nums1Size<nums2Size ? nums1Size : nums2Size));
	qsort(nums1, nums1Size, sizeof(int), Cmp);
	qsort(nums2, nums2Size, sizeof(int), Cmp);
	while ((q<nums1Size) && (p<nums2Size)){
		if (nums1[q] == nums2[p]){
			ret[i] = nums1[q];
			++q;
			++p;
			++i;
			++n;
		}
		else{
			if (nums1[q]<nums2[p]){
				++q;
			}
			else{
				++p;
			}
		}

	}

	*returnSize = n;
	return ret;
}
